package org.csu.mypetstore.service.impl;

import org.csu.mypetstore.domain.Inventory;
import org.csu.mypetstore.domain.Item;
import org.csu.mypetstore.persistence.ItemMapper;
import org.csu.mypetstore.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ItemServiceImpl implements ItemService {
    @Autowired
    private ItemMapper itemMapper;

    @Override
    public Item getItemByItemId(String itemId) {
        return itemMapper.getItemByItemId(itemId);
    }

    @Override
    public List<Item> getItemListByProduct(String productId) {
        return itemMapper.getItemListByProductId(productId);
    }

    @Override
    public int getQuantityByItemId(String itemId) {
        Inventory inventory = itemMapper.getQuantityByItemId(itemId);
        return inventory.getQuantity();
    }

    @Override
    public void updateQuantity(String itemId, int quantity) {
        itemMapper.updateQuantity(itemId, quantity);
    }

    @Override
    public void deleteItemByItemId(String itemId) {
        itemMapper.deleteItem(itemId);
        itemMapper.deleteInventory(itemId);
    }

    @Override
    public void updateItem(Item item) {
        itemMapper.updateItem(item);
    }

    @Override
    public List<Item> getAll() {
        return itemMapper.getAll();
    }

    @Override
    public void deleteItemByProductId(String productId) {
        itemMapper.deleteItemByProductId(productId);
    }

    @Override
    public void addItem(Item item) {
        itemMapper.addItem(item);
        itemMapper.addInventory(item.getItemId(), item.getQuantity());
    }

    @Override
    public void updateQuantityRelative(String itemId, int quantity) {
        itemMapper.updateQuantityRelative(itemId, quantity);
    }
}
